package com.yufei.pfw.service;

import java.util.List;
import java.util.Map;

import com.yufei.entity.Entity;
import com.yufei.utils.SpringUtils;

/**
 * @author jasstion
 * 下午2:00:15
 */
public interface PfwService {
/**
 * @param parametersMap:key实体中的属性名字，value为具体查询时候的值
 * 比如:区间（10-30）,大小(>34 or <45 ),离散值(12,23,345),排序(a,d)
 * 具体各种实现都会有具体解决此类问题的方式
 * @return
 */
	public static final PfwService pfwService=(PfwService) SpringUtils.getBeanFromBeanContainer(PfwService.class
			);
public <T> List<T> query(Map<String, Object> parametersMap, Class<T> t);
public <T> List<T> query(String query,Class<T> t);
public <T> void update(T t);
public <T> Long save(T t);
public <T> void batchSave(List<T> t);
public <T> void batchUpdate(List<T> t);


public <T extends Entity> void delete(T t);
public <T> List<T> query(List<QueryPaire> queryPaires,Class<T> t) ;
public <T>  T query(String key,Object value,Class<T> t) ;
public <T>  List<T> queryList(String key,Object value,Class<T> t) ;
public <T>  T find(Class<T> t,Long id) ;
public <T> long count(List<QueryPaire> queryPaires,Class<T> t) ;
public <T> long count(Map<String, Object> parametersMap,Class<T> t) ;
public <T> long removeAll(Map<String, Object> parametersMap,Class<T> t) ;

public <T> long remove(Object obj) ;



public <T> void dropTable(Class<T> t);
public <T> long  updateAll(Map<String, Object> parametersMap,
		Map<String, Object> setValuesMap, Class<T> t);
}
